一个关于 AI-Programming/Coding 人机共生的讨论框架

20241013 针对大帅老猿 vs 云风 on X: "在 AI 高速进化的今天,编程能力只会越来越不重要 vs 想法创意,执行力,持续获取流量的能力只会越来越不重要",这不是简单的程序员与产品经理谁先下岗(哪种能力更容易被 AI 吸收)的问题;

1.1)讨论中提到了经典的可计算问题,无限复杂世界的可计算依赖形式化(符号化),但在映射为各种模态的符号并传递过程中,上下文信息是无法保真的(人有取舍、AI 有压缩),这也是符号主义只能转向连接主义的原因之一。回头看经典的软工一直在做的事情(理想目标),就是让云风这类上游程序员 “抽象封装”尽量完备的针对世界建模的元件及其架构(各类 SDK),而让大帅老猿等下游程序员(将来就是云云众生)来构建世界模型的某个局部与侧面(如那些重 CURD 类的 “映射界面”),优雅的内核代码与业务屎山代码并存,正是体现了一代代程序员形式化这个世界的努力。而软工到了 AI-Coding 爆发前的低代码/无代码(图形编程)阶段,我认为其实是到了所有程序员综合认知负担的一个瓶颈,少数心力强的架构者无法周全后续映射的全部可能,大量业务实现者则基于 SDK 所谓的“最佳实践”匆匆构建。但所有这些产出物在 GPT 之后回头看,仿佛就是为 AI-Coding 准备着的,破局的范式正是在已有 SDK 抽象实践基础上的“屎山代码”中构建起来。

1.2)有意思的是,TDD(测试驱动的开发)正是图灵测试的一个隐喻,因此只要能形式化(符号化)写出的测试,AI 早晚一定能够生成代码并通过测试,考虑到程序员极其讨厌测试覆盖与带新人,TDD、结对编程等很多经典软工反而更面向 AI(工程化就是为了自动化)。而回到当下讨论具体实现的过程中,程序员与 AI 的这种范式交叉(比如巧合编程之类对人是糟糕的,而对 AI 就是其本质),如同这两天 Hinton 翻 Chomsky 的旧账一样,那就是两边都对(只是视角不同而已)。

2.0)由上述关于经典软工方法论及其与 AI-Coding 关系的讨论,能否推论出 Coding 更容易被 AI 吸收吗?即使 AI-Coding 的确是这一年落地最快的领域,我也并不那么确定,因为对自己熟悉的领域更容易祛魅些。再找一个一直跟进 AIGC & AI-Design 的设计师,他极有可能也会通过论述设计领域的范式迁移,倾向 Designing 更容易被 AI 吸收……这也是类似讨论最后无法深入而各说各话的原因。而问题的关键,除了职业技能视角的不同,则是讨论过程中没有清晰的区分 Copilot 与 Agent 及其当下的发展阶段。 我尝试构建了一个关于人机共生的讨论框架(见人机共生的讨论框架.excalidraw),用以分析 AI-Programming/AI-Design 以及 Human-in/on-the-loop 的范式迁移。

2.1)图中横轴由产品设计(偏描述 Description)与编程开发(偏表达 Representation)从两侧往中间汇聚,构成这个吞噬一切的软件/互联网世界,两个方向按照当下的职业技能,各自再分为大致的三部分(整体是连续而非离散的),体现了通过描述物理世界并在数字世界表达,从而根据 to X 不同模式构成丰富的 Human-in/on-the-loop(其反身性见后)。纵轴为 Copilot 与 Agent 两条介入度(落地率)不断变化中的曲线,这里 Copilot/Assistant 与 Agent 的差异,可参考 Harrison Chase 系列博客中对 Agentic(智能体特性)与 Human-in/on-the-loop 的论述,在

2.2)区分“技能任务”与“职业工作”两个概念(参考招聘文案,抬头是职业,细则是技能),前者受 Copilot/Agent 的影响是相对清晰可测的,而后者的变化则要复杂的多,不是“前端后端并全栈”那么简单。

为何之前的“套壳”现在敢用“认知架构”这个词,因为 LM/FM 在信息压缩基础上,可以对人提供的 Prompt(符号)及其 Engineering(结构)“解压”出一个新世界,这种“嘴替”和“手替”级别的生成,很难不将其与人的认知对等看待(将人的认知过程分出去了一部分)。此外,一头是 Prompt 大神们跟进 AI 能力不断探索生成内容的天花板,而从社会经济整体看,另一头必然是文本构建并诠释概念体系的价值在不断的消解,这也是写作两极分化的另一种体现。

而在 AI 吞噬软件的趋势下,设计侧是 AI-UX 向 AI-Design 的发展,开发侧是 AI-Coding 向 AI-Programming 的发展。


file-20241015231154463.png


0)AI-Programming/Coding 的这一波讨论,到 Naval 这个金句时,其实已经陷入一种概念框架的杂糅中。简单说,就是把“技能”与“职业”混在一起讨论。Grady Booch 认为,软件工程是个抽象程度不断提升的领域,当下只不过与之配套的工具发生了变化,新的软件架构技能要求在一个更具想象力的层面展开。这里的技能是细颗粒度的,个体的,相对独立而可测量的,而职业不是技能的简单的组合,虽然教育领域希望能将其简化为如同学科专业的划分一样。AI 对职业的影响,需要在更为宏观的社会层面展开,涉及群体与制度。
1)Geofrrey Hinton 说“人类当下局面是,旧石器时代的大脑、中世纪的制度与类神的技术。”因此我们应该聚焦在 AI 对技能进化的影响,多些应用场景的实例,多些众源的实操体感变化。而 AI 对职业进化的影响,即需要考虑人类智商与认知负担的正态分布,也要考虑历史上新技术是如何型构社会的,如同大卫·格雷伯在《规则的悖论》中所言,诗性技术从来都是导向官僚技术。这个议题极为庞杂,比如职业分工与技能融合之间的张力,“人人都是产品经理”这个畅想的荒诞(之前的“是个人都能做产品经理”)。

2)沿着 AI 辅助编程给软件工程带来的需求开发范式变化 的举个例子:这里面的产品设计与开发程序员的技能扩展了,那他们的职业还能这么称呼吗?如同 Grady Booch 举的例子:“架构师的大部分工作,实际已经是从大型框架和组件中做选择并将它们编排在一起时,就越来越多被称为高级工程师、首席工程师或者杰出工程师之类……所以现在架构师的决策变成了:我该使用哪种云服务、该选择哪种消息传递系统?这个决定涉及很多经济考量,而不仅仅是与软件相关的选择。我认为架构师的角色已经发生了重大变化,因为大家现在处理的是系统问题,而不再仅仅局限于软件本身。”可见,这不仅仅是职业岗位称谓的变化,其实也反映了整个软工的结构变化。